/**
 * 类型别名
 *
 * 为经常出现的类型创建一个方便、易识别、可移植的类型名
 * 为复杂类型名创建一个简单的类型名
 */
type Point = {
  x: number;
  y: number;
};

type ID = number | string;



/**
 * 类型断言
 *
 * TypeScript only allows type assertions which convert to a more specific or less specific version of a type. This rule prevents “impossible” coercions like:
 * const x: number = 'hello' as number; // is error
 */
// 方式一
let typeAssertion1 = document.getElementById('main_canvas') as HTMLCanvasElement;
// 方式二
let typeAssertion2 = <HTMLCanvasElement>document.getElementById('main_canvas');
// 方式三（仅限于断言不是 undefined 或 null 类型，此推断应谨慎使用，除非确保变量为非 undefined 或 null）
let nullableObj: object;
console.log(nullableObj!.toString);
